This is needed because some layouts don't have an uppercase level.
That shouldn't make symbols the 2nd level.
root["levels"] = []
# parse levels
for index, keymap in enumerate(tree.iter('keyMap')):
- level = {}
- root["levels"].append(level)
- level["level"] = index + 1
# FIXME: heuristics here
modifiers = keymap.get('modifiers')
if not modifiers:
mode = 'default'
- elif 'shift' in modifiers.split(' ') or 'lock' in modifiers.split(' '):
+ modifiers = ''
+ elif 'shift' in modifiers.split(' '):
mode = 'latched'
+ modifiers = 'shift'
else:
mode = 'locked'
+ level = {}
+ level["level"] = modifiers
level["mode"] = mode
level["rows"] = parse_rows(keymap)
+ root["levels"].append(level)
return root
{
"levels": [
{
- "level": 1,
+ "level": "",
"mode": "default",
"rows": [
[
]
},
{
- "level": 2,
+ "level": "shift",
"mode": "latched",
"rows": [
[
]
},
{
- "level": 3,
+ "level": "opt",
"mode": "locked",
"rows": [
[
]
},
{
- "level": 4,
+ "level": "opt+shift",
"mode": "locked",
"rows": [
[
],
"locale": "fr",
"name": "French"
-}
\ No newline at end of file
+}